package ar.com.larreta.colegio.intercambio.client;

import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import ar.com.larreta.intercambio.client.Pedido;
import ar.com.larreta.intercambio.client.comunes.Dato;

public class Alumno extends Pedido {

	public static final String ID = "id";
	public static final String NOMBRE = "nombre";
	public static final String APELLIDO = "apellido";
	public static final String TIPO_DOCUMENTO = "tipoDocumento";
	public static final String NUMERO_DOCUMENTO = "numeroDocumento";
	public static final String NIVEL = "nivel";
	public static final String ANIO = "anio";
	public static final String DIVISION = "division";
	public static final String PLANES = "planesDePagos";
	public static final String OBLIGACIONES = "obligaciones";
	public static final String PAGOS = "pagos";
	public static final String PROXIMA_OBLIGACION_IMPAGA = "proximaObligacionImpaga";
	public static final String SIGUIENTE_OBLIGACION_IMPAGA = "siguienteObligacionImpaga";
	public static final String ULTIMO_PAGO_REALIZADO = "ultimoPagoRealizado";
	public static final String ANTERIOR_PAGO_REALIZADO = "anteriorPagoRealizado";
	public static final String TOTAL_ADEUDADO = "totalAdeudado";
	public static final String RESPONSABLE = "responsable";
	
	public Alumno(){
		setProceso(ProcesosColegioConst.GUARDAR_ALUMNO);
	}
	
	public Long getId() {
		return get(ID);
	}
	public void setId(Long id) {
		set(ID, id);
	}
	
	public String getNombre() {
		return get(NOMBRE);
	}
	public void setNombre(String nombre) {
		set(NOMBRE, nombre);
	}
	public String getApellido() {
		return get(APELLIDO);
	}
	public void setApellido(String apellido) {
		set(APELLIDO, apellido);
	}
	public Dato getTipoDocumento() {
		return get(TIPO_DOCUMENTO);
	}
	public void setTipoDocumento(Dato tipoDocumento) {
		set(TIPO_DOCUMENTO, tipoDocumento);
	}
	public String getNumeroDocumento() {
		return get(NUMERO_DOCUMENTO);
	}
	public void setNumeroDocumento(String numeroDocumento) {
		set(NUMERO_DOCUMENTO, numeroDocumento);
	}
	public Dato getNivel() {
		return get(NIVEL);
	}
	public void setNivel(Dato nivel) {
		set(NIVEL, nivel);
	}
	public Dato getAnio() {
		return get(ANIO);
	}
	public void setAnio(Dato anio) {
		set(ANIO, anio);
	}
	public Dato getDivision() {
		return get(DIVISION);
	}
	public void setDivision(Dato division) {
		set(DIVISION, division);
	}
	
	public Set getPlanesDePagos() {
		return get(PLANES);
	}
	
	public void setPlanesDePagos(List planes) {
		set(PLANES, new HashSet(planes));
	}
	
	public void setPlanesDePagos(Set planes) {
		set(PLANES, planes);
	}

	@Override
	public boolean equals(Object obj) {
		try{
			Alumno alumno = (Alumno) obj;
			return this.getId().equals(alumno.getId());
		} catch (Exception e){}
		return Boolean.FALSE;
	}
	
	public String getNombreCompleto(){
		return getNombre() + " " + getApellido();
	}
	
	public Collection getObligaciones(){
		return get(OBLIGACIONES);
	}
	
	public void setObligaciones(Collection obligaciones){
		set(OBLIGACIONES, obligaciones);
	}
	
	public Collection getPagos(){
		return get(PAGOS);
	}
	
	public void setPagos(Collection pagos){
		set(PAGOS, pagos);
	}
	
	public String getProximaObligacionImpaga(){
		return get(PROXIMA_OBLIGACION_IMPAGA);
	}

	public void setProximaObligacionImpaga(String proxima){
		set(PROXIMA_OBLIGACION_IMPAGA, proxima);
	}

	public String getSiguienteObligacionImpaga(){
		return get(SIGUIENTE_OBLIGACION_IMPAGA);
	}

	public void setSiguienteObligacionImpaga(String siguiente){
		set(SIGUIENTE_OBLIGACION_IMPAGA, siguiente);
	}

	public String getUltimoPagoRealizado(){
		return get(ULTIMO_PAGO_REALIZADO);
	}

	public void setUltimoPagoRealizado(String pago){
		set(ULTIMO_PAGO_REALIZADO, pago);
	}

	public String getAnteriorPagoRealizado(){
		return get(ANTERIOR_PAGO_REALIZADO);
	}

	public void setAnteriorPagoRealizado(String pago){
		set(ANTERIOR_PAGO_REALIZADO, pago);
	}
	
	public Double getTotalAdeudado(){
		return get(TOTAL_ADEUDADO);
	}
	
	public void setTotalAdeudado(Double total){
		set(TOTAL_ADEUDADO, total);
	}
	
	public Responsable getResponsable() {
		return get(RESPONSABLE);
	}
	public void setResponsable(Responsable responsable) {
		set(RESPONSABLE, responsable);
	}
}
